CafePOS
Smart Restaurant & Cafe POS with Recipe BOM Stock Management
CafePOS adalah platform manajemen restoran, cafe, cloud kitchen, dan food court modern yang dirancang untuk mengotomasi seluruh rantai operasional F&Bβmulai dari pesanan kasir, monitor dapur (KDS), meja pelanggan, program loyalitas membership, hingga kontrol stok bahan baku otomatis berbasis resep (Bill of Materials - BOM).
Aplikasi ini dibangun menggunakan arsitektur modern berbasis Laravel 13, Inertia.js, dan Vue 3 (TypeScript). Desain antarmukanya premium bergaya dashboard minimalis profesional dengan dukungan Dark Mode penuh dan skema warna aksen Cokelat Kopi (Coffee Theme).
β¨ High Value & Keunggulan Sistem
CafePOS dirancang untuk mengendalikan biaya makanan (food cost) dan merapikan operasional harian cafe secara terintegrasi:
- Auto-Deduction Stok Bahan Baku (BOM)
Setiap menu minuman atau makanan yang terjual (misal: Cafe Latte) otomatis memotong stok bahan baku penyusunnya secara real-time berdasarkan resep (misal: Espresso 18 gr dan Susu 200 ml). Anda terhindar dari kebocoran stok bahan mentah. - Kitchen Display System (KDS) Terintegrasi
Pesanan dari kasir langsung meluncur ke layar monitor dapur secara real-time. Staff dapur dapat mengelola antrean pesanan berdasarkan status (Pending, Cooking, Ready, Served) dengan tampilan bersih yang mendukung mode gelap penuh dan layar penuh (fullscreen). - Pemberian Peran Terisolasi & Auto-Redirect
Mengamankan titik operasional dengan Role-Based Access Control (RBAC). Saat login:- Kasir otomatis dialirkan ke halaman POS Cashier Terminal.
- Kitchen Staff otomatis dialirkan ke monitor Kitchen Display System (KDS).
- Owner/Manager dialirkan ke panel dashboard utama untuk memantau omset gabungan.
- Manajemen Reservasi & Meja Interaktif
Visualisasikan status meja fisik di cafe Anda (Available, Occupied, Reserved). Lengkap dengan modul reservasi jadwal kunjungan pelanggan untuk mengamankan kapasitas meja pada jam sibuk. - Promo Engine & Loyalty Point CRM
Dorong penjualan dengan opsi promo fleksibel (Diskon Persentase, Potongan Nominal, dan BOGO). Member berhak mendapatkan akumulasi poin loyalitas yang dapat ditukarkan langsung sebagai pengurang tagihan saat checkout. - Split Bill Dinamis
Mempermudah penagihan meja grup. Pelanggan dalam satu meja dapat membayar pesanan mereka masing-masing (pisah tagihan) dengan kalkulasi subtotal dan pajak yang terhitung otomatis per bagian.
π Fitur Utama & Modul
1. POS Terminal & Penjualan
- 3 Jenis Transaksi: Mendukung pesanan Dine In (dengan pilihan meja), Take Away (antrean otomatis), dan Delivery.
- Hold & Resume: Simpan keranjang belanja sementara saat pelanggan masih memilih menu tambahan.
- Split Bill: Pisah pembayaran per item belanja secara fleksibel.
- Cetak Tiket Termal: Cetak langsung struk kasir (Thermal Receipt) maupun tiket pesanan untuk dapur.
2. Dapur & Antrean
- Kitchen Display System (KDS): Tampilan antrean pesanan per nota (Order View) maupun ringkasan item yang harus dimasak (Item View).
- Monitor Riwayat Selesai: Tab history untuk meninjau kembali pesanan yang telah disajikan (served).
3. Resep & Inventori
- Bahan Baku (Ingredients): Pencatatan bahan mentah lengkap dengan satuan ukur dasar (gr, ml, pcs, kg, dll).
- Resep BOM (Bill of Materials): Pemetaan takaran bahan baku per porsi menu produk.
- Stock Opname: Audit stok berkala untuk mendeteksi selisih stok sistem dengan fisik beserta laporan satuannya.
- Waste Management: Pencatatan bahan baku yang rusak, basi, atau terbuang untuk analisis pemborosan (waste cost).
4. Multi-Outlet, Voucher & Pengaturan
- Multi-Branch Control: Pengelolaan stok produk dan transaksi yang terisolasi per outlet cabang fisik.
- Voucher & Promo Engine: Pengelolaan voucher diskon kustom (dengan konfigurasi masa berlaku
expires_at, kuota klaimusage_limit, minimal belanja, dll) serta promo otomatis. - Settings System: Ubah nama aplikasi, logo, favicon, tarif pajak restoran (PB1), dan biaya layanan (service charge) dari satu halaman kontrol.
5. Panduan Pengoperasian Sistem (User Guides)
- Modul Panduan Interaktif: Halaman khusus panduan cara penggunaan sistem untuk setiap fitur (POS Terminal, KDS Dapur, Bahan Baku/BOM, Manajemen Outlet, Voucher Engine) dengan UI interaktif, sidebar navigasi, dan bahasa Indonesia yang mudah dipahami.
- Format Markdown & HTML: Panduan diformat rapi dengan standard HTML rendering (
v-html) untuk kemudahan navigasi bagi staff kasir maupun admin.
π Alur Kerja Sistem (Workflow)
1. Alur Transaksi Kasir POS (BOM Stock Deduction)
2. Alur Pengelolaan Dapur (KDS Flow)
ποΈ Struktur Database & Relasi (ERD)
Rincian Tabel Database Utama:
users: Akun kasir, waiter, kitchen staff, manager, dan owner.outlets: Daftar cabang cafe fisik (Kemang, Senopati, dll).tables: Daftar meja makan fisik di masing-masing outlet.ingredients: Stok bahan mentah (susu, biji kopi, gula pasir, dll).products: Menu makanan/minuman yang dijual ke pelanggan.recipes: Jembatan resep (BOM) yang menentukan jumlah bahan baku per produk.transactions: Nota transaksi penjualan kasir (dine in/take away/delivery).transaction_items: Rincian item menu yang dibeli di setiap transaksi.wastes: Log pencatatan bahan baku yang terbuang/rusak.opnames: Dokumen opname berkala audit stok bahan baku fisik.settings: Pengaturan global (site name, logo, favicon, tax, service percentage).licenses: Penyimpan kunci verifikasi lisensi lokal terenkripsi.
π Struktur Folder Utama Proyek
cafepos/
βββ app/ # π§ LOGIKA BACKEND UTAMA (PHP)
β βββ Http/
β β βββ Controllers/ # Controller logika data & render Inertia
β β β βββ PosController.php # POS Checkout & Auto-Deduction BOM
β β β βββ KdsController.php # Monitor KDS dapur & update status
β β β βββ IngredientController.php # Inventory & resep produk
β β β βββ ...
β β βββ Middleware/ # Filter Keamanan (CheckLicense, DemoModeMiddleware)
β βββ Models/ # Model Eloquent Database (Relationship)
β β βββ License.php
β β βββ Product.php
β β βββ Recipe.php
β β βββ Ingredient.php
β β βββ ...
βββ database/ # ποΈ SKEMA & SEEDER
β βββ migrations/ # Berkas migrasi pembuatan tabel database
β βββ seeders/ # Seeder master & dummy data pengujian lengkap
βββ resources/ # π¨ FRONTEND VUE 3 & TYPESCRIPT
β βββ css/ # CSS & custom styling
β βββ js/ # Kode Vue 3
β βββ Components/ # Komponen UI (DemoModeBanner, Modal, dll)
β βββ Layouts/ # Layout Dashboard (AdminLayout)
β βββ Pages/ # Halaman UI (POS, Kds, Products, Tables, Opnames)π» Panduan Instalasi Lokal di Windows (Non-Docker)
Tahap 1: Prasyarat Software
- Pasang Laragon atau XAMPP dengan PHP minimal versi 8.2.
- Pasang Node.js (Rekomendasi versi LTS 20).
- Pasang Composer & Git for Windows.
Tahap 2: Langkah Instalasi
Clone / Download Source Code:
git clone <repository-url> cafepos cd cafeposSalin Konfigurasi Environment:
cp .env.example .envSetup Database di File
.env:
Buat database MySQL baru bernamacafepos, lalu sesuaikan parameter koneksi di file.env:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=cafepos DB_USERNAME=root DB_PASSWORD=password_mysql_andaInstal Dependensi & Generate Key:
composer install npm install php artisan key:generateMigrasi Tabel & Seeder:
CafePOS menyediakan pemisah seeder yang jelas untuk kebutuhan rilis produksi (bersih tanpa data dummy) maupun demo (lengkap dengan data penjualan). Jalankan perintah berikut:A. Untuk Lingkungan Demo / Development (Dengan Data Simulasi Lengkap):
# Migrasi database dan isi konfigurasi dasar + data demo lengkap php artisan migrate:fresh --seed # Isi database dengan Dummy Data Cafe & Logistik lengkap php artisan db:seed --class=CafePOSDummySeeder php artisan db:seed --class=CompletePhasesSeederB. Untuk Lingkungan Production (Sistem Bersih Siap Pakai):
# Migrasi database kosong php artisan migrate:fresh # Isi konfigurasi dasar aplikasi, peran/hak akses, dan menu sidebar php artisan db:seed --class=ProductionSeederJalankan Server Lokal:
Jalankan server Laravel backend dan Vite compiler frontend secara bersamaan:- Terminal 1:
php artisan serve - Terminal 2:
npm run dev
Akses aplikasi melalui browser di:http://127.0.0.1:8000
- Terminal 1:
π³ Panduan Deployment Menggunakan Docker
Sistem orkestrasi Docker Compose CafePOS telah dikonfigurasi lengkap untuk siap di-deploy pada server Linux VPS Ubuntu produksi menggunakan container Nginx + PHP-FPM + MySQL + Redis.
Cara Deploy Cepat:
- Clone Project atau Upload Folder ke Server:
git clone <repository-url> /var/www/cafepos cd /var/www/cafepos - Buat File Environment Produksi:
Aturcp .env.example .env nano .envAPP_ENV=production,APP_DEBUG=false,DB_CONNECTION=mysql,DB_HOST=mysql, dan atur password database MySQL yang aman. - Bangun Container (Multi-stage Node & PHP Build):
docker compose -f docker-compose.prod.yml up -d --build - Inisialisasi Laravel Dalam Container:
docker compose -f docker-compose.prod.yml exec app php artisan key:generate docker compose -f docker-compose.prod.yml exec app php artisan migrate --force docker compose -f docker-compose.prod.yml exec app php artisan db:seed --force docker compose -f docker-compose.prod.yml exec app php artisan storage:link # Caching optimasi rute & config docker compose -f docker-compose.prod.yml exec app php artisan config:cache docker compose -f docker-compose.prod.yml exec app php artisan route:cache docker compose -f docker-compose.prod.yml exec app php artisan view:cache
π Modul Proteksi Lisensi
- Bypass Lisensi Otomatis (Local/Dev):
Sistem verifikasi lisensi tidak akan aktif bila dijalankan di lingkungan pengembangan lokal:.envdiaturAPP_ENV=localorAPP_ENV=testing.- Host domain berupa:
localhost,127.0.0.1, IP private LAN (192.168.*,10.*), domain.testatau.local.
- Kunci Lisensi Produksi:
Di server produksi online, middlewarelicense.verifyakan mengunci sistem dan memaksa redirect ke/admin/license/activatesampai dimasukkan lisensi valid. Lisensi terikat padaAPP_KEY. Jangan men-generate ulang APP_KEY setelah melakukan aktivasi lisensi.
π Akun Uji Coba (Credentials)
Gunakan akun di bawah ini untuk menguji hak akses RBAC CafePOS di localhost atau server demo (berlaku bila menjalankan seeder demo):
| Role Peran | Email Login | Password | Penugasan Cabang |
|---|---|---|---|
| Super Admin | superadmin@example.com |
password |
Semua Outlet Cabang |
| Admin User | admin@example.com |
password |
Semua Outlet Cabang |
| Owner User | owner@example.com |
password |
Semua Outlet Cabang |
| Kasir Kemang | cashier@example.com |
password |
Dibatasi ke Outlet Kemang |
| Kasir Senopati | cashier2@example.com |
password |
Dibatasi ke Outlet Senopati |
| Kitchen Staff Kemang | kitchen@example.com |
password |
Dibatasi ke Dapur Kemang |
Developed with β€οΈ for Cafe & Restaurant Owners. Copyright Β© 2026. All rights reserved.